/**
 * 调试审核通知问题
 * 检查各个环节是否正常工作
 */

console.log('=== 调试审核驳回通知问题 ===\n');

// 1. 检查后端用户信息API的实现
console.log('1️⃣  检查后端API实现...');

const fs = require('fs');
const path = require('path');

// 读取用户路由文件
const userRouteFile = path.join(__dirname, 'server/routes/users.js');
if (fs.existsSync(userRouteFile)) {
  const content = fs.readFileSync(userRouteFile, 'utf-8');
  
  // 检查是否包含审核结果检查代码
  const hasCheckFunction = content.includes('checkRecentRejections');
  const hasAuditResults = content.includes('auditResults');
  const hasHasUnreadFlag = content.includes('hasUnreadAuditResults');
  
  console.log(`   ✅ checkRecentRejections函数: ${hasCheckFunction ? '存在' : '❌ 缺失'}`);
  console.log(`   ✅ auditResults字段: ${hasAuditResults ? '存在' : '❌ 缺失'}`);
  console.log(`   ✅ hasUnreadAuditResults字段: ${hasHasUnreadFlag ? '存在' : '❌ 缺失'}`);
  
  if (!hasCheckFunction || !hasAuditResults || !hasHasUnreadFlag) {
    console.log('   ⚠️  后端API实现不完整');
  } else {
    console.log('   ✅ 后端API实现正常');
  }
} else {
  console.log('   ❌ 找不到用户路由文件');
}

console.log();

// 2. 检查前端通知工具
console.log('2️⃣  检查前端通知工具...');

const notificationFile = path.join(__dirname, 'shuaiDanClient/utils/notification.js');
if (fs.existsSync(notificationFile)) {
  const content = fs.readFileSync(notificationFile, 'utf-8');
  
  const hasCheckAuditResults = content.includes('checkAuditResults');
  const hasShowNotification = content.includes('showAuditResultNotifications');
  const hasMarkViewed = content.includes('markNotificationsAsViewed');
  
  console.log(`   ✅ checkAuditResults方法: ${hasCheckAuditResults ? '存在' : '❌ 缺失'}`);
  console.log(`   ✅ showAuditResultNotifications方法: ${hasShowNotification ? '存在' : '❌ 缺失'}`);
  console.log(`   ✅ markNotificationsAsViewed方法: ${hasMarkViewed ? '存在' : '❌ 缺失'}`);
  
  if (!hasCheckAuditResults || !hasShowNotification || !hasMarkViewed) {
    console.log('   ⚠️  前端通知工具实现不完整');
  } else {
    console.log('   ✅ 前端通知工具实现正常');
  }
} else {
  console.log('   ❌ 找不到前端通知工具文件');
}

console.log();

// 3. 检查App.vue集成
console.log('3️⃣  检查App.vue集成...');

const appVueFile = path.join(__dirname, 'shuaiDanClient/App.vue');
if (fs.existsSync(appVueFile)) {
  const content = fs.readFileSync(appVueFile, 'utf-8');
  
  const hasNotificationImport = content.includes('notification.js');
  const hasCheckMethod = content.includes('checkAuditNotifications');
  const hasOnShow = content.includes('onShow');
  
  console.log(`   ✅ 通知工具导入: ${hasNotificationImport ? '存在' : '❌ 缺失'}`);
  console.log(`   ✅ 检查方法: ${hasCheckMethod ? '存在' : '❌ 缺失'}`);
  console.log(`   ✅ onShow生命周期: ${hasOnShow ? '存在' : '❌ 缺失'}`);
  
  if (!hasNotificationImport || !hasCheckMethod) {
    console.log('   ⚠️  App.vue集成不完整');
  } else {
    console.log('   ✅ App.vue集成正常');
  }
} else {
  console.log('   ❌ 找不到App.vue文件');
}

console.log();

// 4. 问题诊断和解决建议
console.log('4️⃣  问题诊断和解决建议:\n');

console.log('🔍 可能的问题原因:');
console.log('   1. 数据库连接问题 - 无法查询最近的审核驳回记录');
console.log('   2. 没有最近24小时内的驳回记录');
console.log('   3. 用户没有登录或token无效');
console.log('   4. 前端没有正确调用检查方法');
console.log('   5. 小程序没有重新启动或刷新');

console.log();
console.log('🛠️  解决步骤:');
console.log('   1. 确保数据库服务器正在运行');
console.log('   2. 检查是否有最近的审核驳回记录');
console.log('   3. 确保用户已登录');
console.log('   4. 重新启动小程序');
console.log('   5. 检查浏览器控制台是否有错误信息');

console.log();
console.log('🧪 测试方法:');
console.log('   1. 管理端驳回一个审核申请');
console.log('   2. 用户端登录对应的用户');
console.log('   3. 重新启动小程序或刷新页面');
console.log('   4. 查看是否弹出通知');

console.log();
console.log('✅ 如果以上步骤都正常，通知应该会显示');